import XLSX from 'xlsx'
import { dateFilter, formatDate } from '@/filters/index'
/**
 * 获取表头（通用方式）
 */
export const getHeaderRow = (sheet) => {
	const headers = []
	const range = XLSX.utils.decode_range(sheet['!ref'])
	let C
	const R = range.s.r
	/* start in the first row */
	for (C = range.s.c; C <= range.e.c; ++C) {
		/* walk every column in the range */
		const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]
		/* find the cell in the first row */
		let hdr = 'UNKNOWN ' + C // <-- replace with your desired default
		if (cell && cell.t) hdr = XLSX.utils.format_cell(cell)
		headers.push(hdr)
	}
	return headers
}

export const isExcel = (file) => {
	return /\.(xlsx|xls|csv)$/.test(file.name)
}
// 格式化 将中文转成表中对应的英文字段
export const generater = (data, ROLE_RELTIVES) => {
	// console.log(data)
	let arr = []
	data.forEach((item) => {
		const userInfro = {}
		// 参照ROLE_RELTIVES 转成插入数组
		Object.keys(item).forEach((key) => {
			if (ROLE_RELTIVES[key]) userInfro[ROLE_RELTIVES[key]] = item[key]
			else userInfro[key] = item[key]
			if (ROLE_RELTIVES[key] === 'createdAt') {
				return (userInfro[ROLE_RELTIVES[key]] = formatDate(item[key]))
			}
			if (ROLE_RELTIVES[key] === 'status') {
				return item[key] === '正常'
					? (userInfro[ROLE_RELTIVES[key]] = true)
					: (userInfro[ROLE_RELTIVES[key]] = false)
			}
			// if (ROLE_RELTIVES[key] === 'roles') {
			// 	if (item[key].includes('管理员')) {
			// 		userInfro.roleIds = [1]
			// 	}
			// 	userInfro.roleIds = [2]
			// }
			if (ROLE_RELTIVES[key] === 'categorical') {
				if (item[key] == '科技') userInfro[ROLE_RELTIVES[key]] = 1
				else if (item[key] == '生活') userInfro[ROLE_RELTIVES[key]] = 2
				else userInfro[ROLE_RELTIVES[key]] = 3
			}
		})
		arr.push(userInfro)
	})
	return arr
}
// 导出 数据格式化成二维数组格式
export const formateJson = (ROLE_RELTIVES, rows) => {
	return rows.map((item) => {
		return Object.keys(ROLE_RELTIVES).map((key) => {
			// 嵌套要进行 打平
			if (ROLE_RELTIVES[key] === 'roles') {
				const roles = item[ROLE_RELTIVES[key]]
				return JSON.stringify(
					roles.map((item) => {
						return item.name
					})
				)
			}

			if (ROLE_RELTIVES[key] == 'categorical') {
				const roles = item[ROLE_RELTIVES[key]]
				return roles.name
			}

			if (ROLE_RELTIVES[key] === 'createdAt') {
				return dateFilter(item[ROLE_RELTIVES[key]])
			}

			if (ROLE_RELTIVES[key] === 'status') {
				return item[ROLE_RELTIVES[key]] === true
					? (item[ROLE_RELTIVES[key]] = '正常')
					: (item[ROLE_RELTIVES[key]] = '停用')
			}

			return item[ROLE_RELTIVES[key]]
		})
	})
}
